package client.main.menu;

import client.main.login.AdminLogin;
import client.main.login.Login;

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;

// 主菜单类
public class MainMenu extends JFrame {
    public MainMenu() {
        setTitle("主菜单");
        setSize(800, 600);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        // 获取屏幕尺寸并设置窗口居中
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2);
//        ClassLoader classLoader = MainMenu.class.getClassLoader();
//        URL image = classLoader.getResource("background/image.jpg");
//        String imageAbsolutePath = new File(image.getFile()).getAbsolutePath();
        String path = System.getProperty("user.dir");
        String imageAbsolutePath = path + "\\background\\image.jpg";
        System.out.println("imageAbsolutePath: " + imageAbsolutePath);
        
        // 设置背景面板
        BackgroundPanel backgroundPanel = new BackgroundPanel(imageAbsolutePath);  // 设置背景图片路径
        backgroundPanel.setLayout(new BoxLayout(backgroundPanel, BoxLayout.Y_AXIS));  // 使用 BoxLayout 实现垂直居中
        
        // 创建按钮面板
        JPanel buttonPanel = new JPanel();
        buttonPanel.setOpaque(false);  // 设置按钮面板透明
        buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));  // 垂直布局
        
        // 创建标题标签
        JLabel titleLabel = new JLabel("物料管理系统");
        titleLabel.setFont(new Font("微软雅黑", Font.BOLD, 36));  // 设置字体样式
        titleLabel.setForeground(Color.WHITE);  // 设置字体颜色
        titleLabel.setAlignmentX(Component.CENTER_ALIGNMENT);  // 标题居中
        
        // 创建用户登录按钮（椭圆形按钮）
        JButton userLoginButton = createOvalButton("用户登录");
        userLoginButton.setAlignmentX(Component.CENTER_ALIGNMENT);  // 按钮居中
        userLoginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                SwingUtilities.invokeLater(() -> {
                    new Login().setVisible(true);  // 打开 Login 界面
                    MainMenu.this.dispose();  // 关闭主菜单窗口
                });
            }
        });
        
        // 创建管理员登录按钮（椭圆形按钮）
        JButton adminLoginButton = createOvalButton("管理员登录");
        adminLoginButton.setAlignmentX(Component.CENTER_ALIGNMENT);  // 按钮居中
        adminLoginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                SwingUtilities.invokeLater(() -> {
                    new AdminLogin().setVisible(true);
                    MainMenu.this.dispose();
                });
            }
        });
        
        // 调整按钮的尺寸
        userLoginButton.setPreferredSize(new Dimension(400, 120));
        adminLoginButton.setPreferredSize(new Dimension(400, 120));
        
        // 添加组件到按钮面板
        buttonPanel.add(titleLabel);
        buttonPanel.add(Box.createRigidArea(new Dimension(0, 140)));  // 标题与按钮之间的间距
        buttonPanel.add(userLoginButton);
        buttonPanel.add(Box.createRigidArea(new Dimension(0, 40)));  // 按钮之间的间距
        buttonPanel.add(adminLoginButton);
        
        // 添加按钮面板到背景面板
        backgroundPanel.add(Box.createVerticalGlue());  // 添加垂直填充，保持组件在中间
        backgroundPanel.add(buttonPanel);
        backgroundPanel.add(Box.createVerticalGlue());  // 添加垂直填充，保持组件在中间
        
        setContentPane(backgroundPanel);  // 设置背景面板为主内容面板
        setVisible(true);
    }
    
    public static void main(String[] args) {
        SwingUtilities.invokeLater(MainMenu::new);
    }
    
    // 创建带椭圆形样式的按钮
    private JButton createOvalButton(String text) {
        JButton button = new JButton(text) {
            @Override
            protected void paintComponent(Graphics g) {
                Graphics2D g2 = (Graphics2D) g.create();
                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g2.setColor(getBackground());
                g2.fillOval(0, 0, getWidth(), getHeight());  // 绘制椭圆形背景
                super.paintComponent(g2);
                g2.dispose();
            }
            
            @Override
            protected void paintBorder(Graphics g) {
                // 自定义边框为椭圆形边框
                Graphics2D g2 = (Graphics2D) g.create();
                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                g2.setColor(new Color(48, 63, 159));  // 边框颜色
                g2.setStroke(new BasicStroke(3));  // 边框宽度
                g2.drawOval(0, 0, getWidth() - 1, getHeight() - 1);  // 绘制椭圆边框
                g2.dispose();
            }
        };
        button.setFont(new Font("微软雅黑", Font.BOLD, 22));  // 设置更大的字体
        button.setBackground(new Color(63, 81, 181));  // 设置按钮背景色
        button.setForeground(Color.WHITE);  // 设置按钮文本颜色
        button.setFocusPainted(false);  // 去掉焦点边框
        button.setContentAreaFilled(false);  // 去掉按钮填充（使按钮透明）
        button.setOpaque(false);  // 设置为透明
        button.setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20));  // 增加按钮内边距
        return button;
    }
    
    // 自定义背景面板类，支持自定义背景图片
    private static class BackgroundPanel extends JPanel {
        private Image backgroundImage;
        
        public BackgroundPanel(String imagePath) {
            try {
                // 加载背景图片
                backgroundImage = ImageIO.read(new File(imagePath));
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("背景图片加载失败！");
            }
        }
        
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            
            if (backgroundImage != null) {
                // 绘制背景图片
                g.drawImage(backgroundImage, 0, 0, getWidth(), getHeight(), this);
            }
        }
    }
}
